'use strict';
var _dataTableSettings = {
    /**
     * bScrollCollapse ：当垂直滚动被允许的时候，DataTable会强制表格视图在任何时候都是给定的高度（对布局有利）不过，当把数据集过滤到十分小的时候看起来会很古怪，而且页脚会留在最下面当结果集的高度比给定的高度小时该参数会使表格高度自适应
     * $(document).ready( function() {
     *   $('#example').dataTable( {
     *      "sScrollY": "200",
     *      "bScrollCollapse": true
     *  } );
     * } );
     * 
     */
    // "bScrollCollapse":true,
    /**
     * bSortCellsTop ：是否允许DataTable使用顶部（默认为true）的单元格，或者底部（默认为false）的单元格，当使用复合表头的时候会有些用处
     */
    // "bSortCellsTop":true,
    /**
     * 指定用于存储客户端信息到cookie中的时间长度，超过这个时间后，自动过期
     */

    // "iCookieDuration":60*60*24, // 一天
    /**
     * sCookiePrefix :该参数可以用来重写DataTable默认指定的用来存储状态信息的cookie的前缀
     */
    // "sCookiePrefix":"_dataTable",

    /**
     * iDeferLoading ：当选项被开启的时候，DataTable在非加载第一次的时候不会向服务器请求数据，而是会使用页面上的已有数据（不会应用排序等），因此在加载的时候保留一个XmlHttpRequest，iDeferLoading被用来指明需要延迟加载，而且也用来通知DataTable一个满的表格有多少条数据，信息元素和分页会被正确保留
     * $(document).ready( function() {
     *     $('#example').dataTable( {
     *        "bServerSide": true,
     *        "sAjaxSource": "scripts/server_processing.php",
     *        "iDeferLoading": 57
     *    });
     * });
     */

    // "iDeferLoading": 57,

    /**
     * 滚动余界是指DataTable在当前页面还有多少条数据可供滚动时自动加载新的数据，你可能希望指定一个足够大的余界，以便滚动加载数据的操作对用户来说是平滑的，同时也不会大到加载比需要的多的多的数据
     */
    "iScrollLoadGap": 50,
    /**
     * 设置为 true 时，dataTable变成下拉刷新数据。
     */
    "bScrollInfinite": false,
    // "bScrollCollapse": false,
    "sScrollY": "100%",
    /**
     * 默认情况下DataTable允许通过为需要键盘导航的元素添加tabindex属性来进行导航（排序、分页、过滤），允许你通过tab键切换控制组件，使用回车键去激活他们，默认为0表示按照文档流来切换，如果需要的话，你可以使用该参数重写切换顺序，使用-1来禁止内建的键盘导航
     */
    // "iTabIndex": 0,
    /**
     * 开启排序功能
     */
    "bSort": false,
    /**
     * 设置使用Ajax方式调用的服务器端的处理方法或者Ajax数据源的HTTP请求方式
     */
    "sServerMethod": "POST",
    /**
     * DataTables载入数据时，是否显示‘进度’提示  
     */
    "bProcessing": true,
    /**
     * 是否启动服务器端数据导入  
     */
    "bServerSide": true,
    /**
     * 是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态
     */
    "bStateSave": true,
    /**
     * 更改显示记录数选项  
     */
    "aLengthMenu": [10, 20, 50, 100],
    /**
     * 默认显示的记录数
     */
    "iDisplayLength": 10,
    /**
     * 是否自适应宽度  
     */
    "bAutoWidth": false,
    /**
     * 是否开启DataTables的高度自适应，当数据条数不够分页数据条数的时候，插件高度是否随数据条数而改变  
     */
    "bScrollCollapse": true,
    /**
     * 是否显示（应用）分页器  
     */
    "bPaginate": true,
    /**
     * 是否显示页脚信息，DataTables插件左下角显示记录数  
     */
    "bInfo": true,
    /**
     * 详细分页组，可以支持直接跳转到某页。分页方式（bs_four_button 、 bs_full、bs_two_button）
     */
    "sPaginationType": "full_numbers",
    /**
     * 是否启动过滤、搜索功能  
     */
    "bFilter": false,
    /**
     * 当使用Ajax数据源或者服务器端处理的时候，DataTable会默认搜索aaData属性作为数据源，该选项允许变更数据源的名称，你可以使用JavaScript的点号对象表示法去访问多级网状数据源
     */
    "sAjaxDataProp": "data",
    /**
     * 该参数用来向DataTable指定加载的外部数据源（如果想使用现有的数据，请使用aData），可以简单的提供一个可以用来获得数据url或者JSON对象，该对象必须包含aaData，作为表格的数据源
     */
    "sAjaxSource": "",
    /**
     * 这是用于定义DataTable布局的一个强大的属性，包括分页，显示多少条数据和搜索。具体使用方法参考：http://blog.csdn.net/lisky119/article/details/25884197
     */

    // "sDom":"",

    /**
     * sScrollXInner ：当横向滚动可用的时候，该属性可以用来强制DataTable的宽度比需要的更长，比如你需要表格彼此相隔适宜，该变量可以用来使表格变大，而且强制滚动，该该属性可以是css设置，或者一个数字（作为像素量度来使用）
     */
    "sScrollX": "100%",
    "sScrollXInner": "100%",
    /**
     * 国际化配置
     */
    "oLanguage": {
        "sProcessing": "正在获取数据，请稍后...",
        "sLengthMenu": "显示 _MENU_ 条",
        "sZeroRecords": "没有您要搜索的内容",
        "sInfo": "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
        "sInfoEmpty": "记录数为0",
        "sInfoFiltered": "(全部记录数 _MAX_ 条)",
        "sInfoPostFix": "",
        "sSearch": "搜索",
        "sUrl": "",
        "oPaginate": {
            "sFirst": "第一页",
            "sPrevious": "上一页",
            "sNext": "下一页",
            "sLast": "最后一页"
        }
    },
    /**
     * datatables初始化完毕后会调用这个方法
     * @return {[type]} [description]
     */
    "fnInitComplete": function(oSettings, json) {},
    /**
     * 行的回调函数
     * @param  {[type]} nRow          [description]
     * @param  {[type]} aData         [description]
     * @param  {[type]} iDisplayIndex [description]
     * @return {[type]}               [description]
     */
    "fnRowCallback": null,
    /**
     * 向服务器传额外的参数
     * @param  {[type]} aoData [description]
     * @return {[type]}        [description]
     */
    "fnServerParams": null,
    /**
     * 服务器端，数据回调处理 。自定义ajax请求
     * @param  {[type]} sSource    [description]
     * @param  {[type]} aData      [description]
     * @param  {[type]} fnCallback [description]
     * @return {[type]}            [description]
     */

    "fnServerData": function(sSource, aData, fnCallback) {
        var self=this;
        var params = {
            pageNum: ((aData.iDisplayStart/aData.iDisplayLength) + 1),
            numPerPage: aData.iDisplayLength
        };
        $.each(aData, function(i, I) {
            if (i != "sEcho" && i.indexOf('mDataProp') == -1 && i != "iColumns" && i != "iSortCol_0" && i != "sColumns" && i != "sSortDir_0" && i != "iDisplayStart" && i != "iDisplayLength") {
                params[i] = I;
            }
        });
        $.ajax({
            "type": "POST",
            "url": sSource,
            "data": params,
            "success": function(data, status, xhr) {
                var record = data.res;
                if("1" == data.code){
                    layer.alert(data.res.msg);
                    return false;
                }else if("0" == data.code){
                    var page = record.data.page
                    var recordCount = !!page? (page.recordCount? page.recordCount : 1) : 1
                    var data = {
                        'aaData': record.data.record,
                        'sEcho': aData.sEcho,
                        // 'iTotalDisplayRecords': record.data.page.recordCount,
                        // 'iTotalRecords': record.data.page.recordCount,
                        'iTotalDisplayRecords': recordCount,
                        'iTotalRecords': recordCount,
                        'success': data.code == "0" ? true : false
                    };
                    fnCallback(data);
                    if(typeof window.getAudioCoverPhoto == 'function'){
                        window.getAudioCoverPhoto(record.data)
                    }
                }
            }
        });
    },
    "fnCreatedCell": function(nTd, sData, oData, iRow, iCol) {},
    // "fnCookieCallback": function(sName, oData, sExpires, sPath) {},
    /**
     * 顾名思义，创建行得时候的回调函数
     * @param  {[type]} nRow       [行对象]
     * @param  {[type]} aData      [数据]
     * @param  {[type]} iDataIndex [索引]
     * @return {[type]}            [description]
     */
    "fnCreatedRow": function(nRow, aData, iDataIndex) {},
    /**
     * dataTable重绘的回调函数
     * @param  {[type]} oSettings [description]
     * @return {[type]}           [description]
     */
    "fnDrawCallback": function(oSettings) {},
    /**
     * 底部的回调函数，这个可以用来做总计之类的功能
     * @param  {[type]} nFoot     [description]
     * @param  {[type]} aData     [description]
     * @param  {[type]} iStart    [description]
     * @param  {[type]} iEnd      [description]
     * @param  {[type]} aiDisplay [description]
     * @return {[type]}           [description]
     */
    "fnFooterCallback": function(nFoot, aData, iStart, iEnd, aiDisplay) {},
    /**
     * 顾名思义，格式化数字的显示方式
     * @param  {[type]} iIn [description]
     * @return {[type]}     [description]
     */
    "fnFormatNumber": function(iIn) {
        return iIn;
    },
    /**
     * 表头的回调函数
     * @return {[type]} [description]
     */
    "fnHeaderCallback": function(nHead, aData, iStart, iEnd, aiDisplay) {},
    /**
     * datatables信息的回调函数
     */
    "fnInfoCallback": null,
    /**
     * 每一次绘datatables时候调用的方法
     * @param  {[type]} oSettings [description]
     * @return {[type]}           [description]
     */
    "fnPreDrawCallback": function(oSettings) {}
};
